//
//  WBStatusListDAL.swift
//  新浪微博
//
//  Created by 名品导购网MPLife.com on 2017/12/19.
//  Copyright © 2017年 sweet. All rights reserved.
//

import Foundation
/// Data Access Layer
//负责处理数据库和网络数据 给listViewModel 返回微博的【字典数组】
//在调整系统的时候 尽量做最小化的调整
class WBStatusListDAL {
    /// 从本地数据库或则网络加载数据
    /// 参数参照网络接口保证对原有代码的最小化调整
    /// - Parameters:
    ///   - userId: <#userId description#>
    ///   - since_id: 下拉刷新ID
    ///   - max_id: 上拉刷新id
    ///   - completion: 完成回调（微博的字典数组，是否成功）
    class func loadStatus(since_id: Int64 = 0, max_id: Int64 = 0,completion:@escaping (_ list:[[String:AnyObject]]?,_ isSuccess:Bool)->()) {
        //获取用户带好
        guard let userId = WBNetworkManager.shared.userAccount.uid else {
            return
        }
        //1.检查本地数据 如果有 直接返回
        let array = CZSQLiteManager.shared.loadStatus(userId: userId, since_id: since_id, max_id: max_id)
        //判断数组的数量 没有数据返回的是没有数据的空数组
        if array.count>0 {
            completion(array, true)
            return
        }
        //2.如果没有加载网络数据
        WBNetworkManager.shared.statusList(since_id: since_id, max_id: max_id) { (list, isSuccess) in
            //判断网络请求是否成功
            if !isSuccess {
                completion(nil, false)
                return
            }
            //判断数据
            guard let listArr = list else{
                completion(nil, isSuccess)
                return
            }
            //3.加载完成之后将网络数据【字典数组】同步写入数据库
            CZSQLiteManager.shared.updateStatus(userId: userId, array: listArr)
            //4.返回网络数据
            completion(listArr, isSuccess)
        }
    }
}










